Node.js搭简单服务器与npm包管理:
什么是Node.js
文档介绍都是这样介绍的:简单的说--就是运行在服务端的 JavaScrip,
第一步:安装node
官网下载地址(根据电脑型号选择32位或者64位):http://nodejs.cn/
第二步:
安装--一直next就可以了
第三步:
检测是否安装成功 cmd打开控制面板->输入node -v,出来版本号即为安装成功
第四步:
体验node:打开控制面板,
键入node进入命令交互模式,可以输入一条代码语句后立即执行并显示结果
搭建一个简易的node.js服务器
新建一个文件夹node 进入该文件夹,我的建在c盘了,cd node
新建一个server.js的文件夹
//引入http模块
var http = require("http");
//设置主机名
var hostName = '127.0.0.1';请输入代码
//设置端口
var port = 8080;
//创建服务
var server = http.createServer(function(req,res){
res.setHeader('Content-Type','text/plain');
res.end("hello nodejs");
});
server.listen(port,hostName,function(){
console.log(`服务器运行在http://${hostName}:${port}`);
});
命令行执行 node server.js命令
在浏览器窗口打开输入:http://127.0.0.1:8080/
到这步一个web服务器就建立成功了! 没错就是这么简单
接着我们来看下前端如何获取服务器东西:
我们编写一个demo.html
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Node.js</title>
<script type="text/javascript" src="jquery-1.11.3.js"></script>
</head>
<body>
<div class="container">
<div class="btn" onclick="getText()">获取数据</div>
<div class="text"></div>
</div>
</body>
<script type="text/javascript">
function getText(){
$(".text").load("http:127.0.0.1:8080");
}
</script>
</html>
打开demo.html中,点击,然后出现如下:
跨域请求~
web服务器并不支持跨域请求,所以报错了。
解决:在我们的服务器的响应头server.js文件里加上如下代码:
res.setHeader('Content-Type','text/plain');
res.setHeader('Access-Control-Allow-Origin',"*")
res.setHeader("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.end("hello nodejs");
然后重启一下服务器:
打开demo.html,点击获取数据,就可以看到hello node.js ,我看查看一下network可以看的请求数据
通常请求服务器都会拼接参数的,最常用的就是get请求,post请求。很明显,我们现在的代码还不能支持。express框架很好的封装了nodejs的http模块,使我们用起来非常的简单。 引入express :通过命令行:
$ npm install express –save
这里我们插入npm 这个话题:
NPM是随同NodeJS一起安装的包管理工具,能解决NodeJS代码部署上的很多问题,常见的使用场景有以下几种:
- 允许用户从NPM服务器下载别人编写的第三方包到本地使用。
- 允许用户从NPM服务器下载并安装别人编写的命令行程序到本地使用。
-
允许用户将自己编写的包或命令行程序上传到NPM服务器供别人使用。
由于新版的nodejs已经集成了npm,所以之前npm也一并安装好了。同样可以通过输入 "npm -v" 来测试是否成功安装,使用 npm 命令安装模块
npm 安装 Node.js 模块语法格式如下:
$ npm install <Module Name>
以下实例,我们使用 npm 命令安装常用的 Node.js web框架模块 express:
$ npm install express
安装好之后,express 包就放在了工程目录下的 node_modules 目录中,因此在代码中只需要通过 require('express') 的方式就好,无需指定第三方包路径。
var express = require('express');
全局安装与本地安装
npm 的包安装分为本地安装(local)、全局安装(global)两种,从敲的命令行来看,差别只是有没有-g而已,比如
npm install express # 本地安装
npm install express -g # 全局安装
查看安装信息
你可以使用以下命令来查看所有全局安装的模块:
$ npm list -g
查看具体模块版本:npm list grunt
卸载模块
我们可以使用以下命令来卸载 Node.js 模块。
$ npm uninstall express
卸载后,你可以到 /node_modules/ 目录下查看包是否还存在,或者使用以下命令查看:
$ npm ls
更新模块
我们可以使用以下命令更新模块:
$ npm update express
创建模块
创建模块,package.json 文件是必不可少的。我们可以使用 NPM 生成 package.json 文件,生成的文件包含了基本的结果:
$ npm init
接下来我们就用以下命令来发布模块:
$ npm publish
如果你以上的步骤都操作正确,你就可以跟其他模块一样使用 npm 来安装。
Package.json 属性说明
name - 包名。
version - 包的版本号。
description - 包的描述。
homepage - 包的官网 url 。
author - 包的作者姓名。
contributors - 包的其他贡献者姓名。
dependencies - 依赖包列表。如果依赖包没有安装,npm 会自动将依赖包安装在 node_module 目录下。
repository - 包代码存放的地方的类型,可以是 git 或 svn,git 可在 Github 上。
main - main 字段指定了程序的主入口文件,require('moduleName') 就会加载这个文件。这个字段的默认值是模块根目录下面的 index.js。
keywords - 关键字
大概的npm介绍到这~
我们继续我们的express:
通过express()方法开启服务,在通过get方法来设置匹配参数的路由,通过在回调函数的req中可以获取请求参数和地址,post请求也是类似,
不过post请求在获取参数的时候要引入body-parser 中间件,用于处理 JSON, Raw, Text 和 URL 编码的数据。命令行安装:
$ npm install body-parser -save
然后新建server-express.js
var express = require("express");
var bodyParser=require("body-parser");
var app = express();
app.use(bodyParser.urlencoded({ extended: false }));
var hostName = '127.0.0.1';
var port = 8080;
app.all('*', function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
res.header("Access-Control-Allow-Methods","PUT,POST,GET,DELETE,OPTIONS");
res.header("X-Powered-By",' 3.2.1')
res.header("Content-Type", "application/json;charset=utf-8");
next();
});
app.get("/get",function(req,res){
console.log("请求url:",req.path)
console.log("请求参数:",req.query)
res.send("这是get请求");
})
app.post("/post",function(req,res){
console.log("请求参数:",req.body);
var result = {code:200,msg:"post请求成功"};
res.send(result);
});
app.listen(port,hostName,function(){
console.log(`服务器运行在http://${hostName}:${port}`);
});
命令行:
$ node server-express.js
服务器又起来了~
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。